import scala.collection.mutable

object Demo14Set {
  def main(args: Array[String]): Unit = {
    /**
     * Set集合：不可变、元素是唯一的、无序的
     */
    // 创建一个Set
    val set1: Set[Int] = Set[Int](1, 2, 3, 4, 5, 6, 7, 8, 2, 2, 2, 3)
    println(set1)
    println(set1(1)) // 判断元素是否存在 并不是通过下标取元素 所以Set是无序的
    println(set1.contains(5))
    println(set1.contains(10))

    // 常见的方法
    println(set1.head)
    println(set1.tail)
    println(set1.take(3))
    println(set1.max)
    println(set1.min)
    println(set1.sum)
    println(set1.isEmpty)
    // ......

    // 常见的操作
    //    set1.foreach()
    //    set1.map()
    //    set1.flatMap()
    //    set1.filter()
    //    set1.groupBy()
    // ......

    // 集合通常用于做交集、并集、差集
    val s1: Set[Int] = Set[Int](1, 2, 3, 4, 5, 6, 7)
    val s2: Set[Int] = Set[Int](5, 6, 7, 8, 9, 10, 11)

    println(s1 & s2)
    println(s1 | s2)
    println(s1.diff(s2))
    println(s2.diff(s1))

    // 可变的Set --> HashSet
    val hSet1: mutable.HashSet[Int] = mutable.HashSet[Int](1, 2, 3, 4, 5, 6, 6, 6, 6, 8, 8, 1)

    println(hSet1)

    hSet1.add(5)
    hSet1.add(2)
    hSet1.add(7)
    hSet1.add(9)
    hSet1.+=(10)

    println(hSet1)

    hSet1.remove(1)
    hSet1.remove(2)
    hSet1.remove(3)
    hSet1.remove(4)
    hSet1.-=(9)
    println(hSet1)

    hSet1.remove(5)
    hSet1.add(55)
    println(hSet1)

  }

}
